package com.bzkj.web.controller.msfx;

import com.bzkj.common.annotation.Log;
import com.bzkj.common.annotation.LogD;
import com.bzkj.common.core.controller.BaseController;
import com.bzkj.common.core.domain.AjaxResult;
import com.bzkj.common.core.page.TableDataInfo;
import com.bzkj.common.domain.QueryDomain;
import com.bzkj.common.enums.BusinessType;
import com.bzkj.msfx.domain.DrugMap;
import com.bzkj.msfx.service.DrugMapService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author C1309
 * @ClassName DrugMapController
 * @description: TODO 码上放心药品信息与erp药品信息映射控制层
 * @date 2024年01月23日
 * @version: 1.0
 */
@RestController
@RequestMapping("/btrh/drugMap")
public class DrugMapController extends BaseController {
    @Resource
    private DrugMapService drugMapService;


    /**
     * 查询码上放心药品信息列表
     *
     * @return 查询结果
     */
    @GetMapping("/msfx/drug")
    public AjaxResult queryMsfxDrug() {
        return drugMapService.queryMsfxDrug();
    }

    /**
     * 查询ncc药品信息
     *
     * @return 查询结果
     */
    @GetMapping("/ncc")
    public AjaxResult queryNccDrug(@RequestParam("drugName") String drugName) {
        return drugMapService.queryNccDrug(drugName);
    }

    /**
     * 插入药品映射关系
     *
     * @param drugMap 药品映射关系
     * @return 插入结果
     */
    @PostMapping
    @PreAuthorize("@ss.hasPermi('association:association:add')")
    @LogD(title = "药品关系映射", businessType = BusinessType.INSERT, pkFieldName = "cInvCode")
    public AjaxResult insertDrugMap(@RequestBody DrugMap drugMap) {
        return drugMapService.insertDrugMap(drugMap);
    }

    /**
     * 查询药品映射关系列表
     *
     * @param drugMap 查询条件
     * @return 查询结果
     */
    @GetMapping("/list")
    @PreAuthorize("@ss.hasPermi('association:association:list')")
    public TableDataInfo queryDrugMapList(DrugMap drugMap) {
        return drugMapService.queryDrugMapList(drugMap);
    }

    /**
     * 删除药品映射信息(WMS系统暂时不考虑)
     *
     * @param ids 需要删除的药品信息ids
     * @return 删除结果
     */
    @DeleteMapping("/{ids}")
    @PreAuthorize("@ss.hasPermi('association:association:remove')")
    @Log(title = "药品关系映射", businessType = BusinessType.DELETE)
    public AjaxResult deleteDrugMap(@PathVariable("ids") Long[] ids) {
        return drugMapService.deleteDrugMapByIds(ids);
    }

    /**
     * 根据id查询药品映射信息
     *
     * @param id 需要查询的药品信息id
     * @return 查询结果
     */
    @GetMapping("/{id}")
    public AjaxResult queryDrugMapById(@PathVariable("id") Long id) {
        return drugMapService.queryDrugMapById(id);
    }

    /**
     * 更新药品映射信息
     *
     * @param drugMap 更新实体
     * @return 更新结果
     */
    @PutMapping
    @PreAuthorize("@ss.hasPermi('association:association:edit')")
    @LogD(title = "药品关系映射", businessType = BusinessType.UPDATE,
            tableNames = "drug_map", pkFieldNames = "id", request_url = "/drugMap/{id}")
    public AjaxResult updateDrugMap(@RequestBody DrugMap drugMap) {
        return drugMapService.updateDrugMap(drugMap);
    }

    /**
     * 查询erp药品信息（首页查询用）
     *
     * @return 查询结果
     */
    @GetMapping("/erpDrug")
    @PreAuthorize("@ss.hasPermi('association:association:list')")
    public AjaxResult erpDrugInfo() {
        QueryDomain queryDomain = new QueryDomain();
        return drugMapService.selectErpDrugInfo(queryDomain);
    }

    /**
     * 根据药品追溯码前七位查询药品信息
     * @param drugCode 追溯码前七位
     * @return 查询结果
     */
    @GetMapping("/typeNo/{drugCode}")
    public AjaxResult queryTypeNo(@PathVariable("drugCode") String drugCode) {
        return drugMapService.queryTypeNo(drugCode);
    }

}
